home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / util / primitives / functional.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  6KB  |  151 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. from cStringIO import StringIO
  5.  
  6. class chained_files(object):
  7.     
  8.     def __init__(self, fileobjs):
  9.         self._bytecount = 0
  10.         self.fileobjs = []
  11.         for obj in fileobjs:
  12.             if not hasattr(obj, 'read') and isinstance(obj, str):
  13.                 self.fileobjs.append(StringIO(obj))
  14.             else:
  15.                 self.fileobjs.append(obj)
  16.             if not hasattr(self.fileobjs[-1], 'read'):
  17.                 raise TypeError('chained_files makes a .read object out of .read objects only. got a %r', obj)
  18.             
  19.             if hasattr(obj, 'tell'):
  20.                 self._bytecount += obj.tell()
  21.                 continue
  22.             self
  23.             print '%s object %r has no attribute tell' % (type(obj), obj)
  24.         
  25.         self.obj = self.fileobjs.pop(0)
  26.  
  27.     
  28.     def read(self, blocksize = -1):
  29.         pass
  30.  
  31.     
  32.     def tell(self):
  33.         return self._bytecount
  34.  
  35.  
  36.  
  37. class AttrChain(object):
  38.     
  39.     def __init__(self, name, parent):
  40.         self.name = name
  41.         self.parent = parent
  42.  
  43.     
  44.     def __getattr__(self, attr):
  45.         if attr == '_getAttributeNames':
  46.             return False
  47.         
  48.         return None(AttrChain if self.name is not None else '' + attr, self.parent)
  49.  
  50.     
  51.     def __call__(self, *a, **k):
  52.         return self.parent(self.name, *a, **k)
  53.  
  54.  
  55.  
  56. class ObjectList(list):
  57.     
  58.     def __init__(self, *a, **k):
  59.         self.__dict__['strict'] = k.pop('strict', True)
  60.         list.__init__(self, *a, **k)
  61.  
  62.     
  63.     def __setattr__(self, attr, val):
  64.         for o in self:
  65.             setattr(o, attr, val)
  66.         
  67.  
  68.     
  69.     def __getattr__(self, attr):
  70.         
  71.         try:
  72.             return list.__getattr__(self, attr)
  73.         except AttributeError:
  74.             
  75.             try:
  76.                 return self.__dict__[attr]
  77.             except KeyError:
  78.                 if self.__dict__.get('strict', True):
  79.                     default = sentinel
  80.                 else:
  81.                     
  82.                     default = lambda *a, **k: pass
  83.                 res = (ObjectList,)((lambda .0: for x in .0:
  84. getattr(x, attr, sentinel))(self))
  85.                 if self.__dict__.get('strict', True) and sentinel in res:
  86.                     raise AttributeError('Not all objects in %r have attribute %r' % (self, attr))
  87.                 
  88.                 
  89.                 try:
  90.                     res = FunctionList(res)
  91.                 except AssertionError:
  92.                     pass
  93.  
  94.                 return res
  95.             except:
  96.                 None<EXCEPTION MATCH>KeyError
  97.             
  98.  
  99.             None<EXCEPTION MATCH>KeyError
  100.  
  101.  
  102.     
  103.     def __repr__(self):
  104.         return '<%s: %r>' % (type(self).__name__, list.__repr__(self))
  105.  
  106.  
  107.  
  108. class FunctionList(ObjectList):
  109.     
  110.     def __init__(self, *a, **k):
  111.         ObjectList.__init__(self, *a, **k)
  112.         if not all((lambda .0: for x in .0:
  113. callable(x))(self)):
  114.             raise AssertionError
  115.         
  116.  
  117.     
  118.     def __call__(self, *a, **k):
  119.         return [ f(*a, **k) for f in self ]
  120.  
  121.  
  122.  
  123. def compose(funcs):
  124.     
  125.     def composed(res):
  126.         for f in funcs:
  127.             res = f(res)
  128.         
  129.         return res
  130.  
  131.     return composed
  132.  
  133.  
  134. def chain(*iterables):
  135.     for it in iterables:
  136.         for element in it:
  137.             yield element
  138.         
  139.     
  140.  
  141.  
  142. def main():
  143.     chained = chained_files((lambda .0: for s in .0:
  144. StringIO(s))('one two three'.split()))
  145.     print chained.read(8)
  146.     print chained.read(8)
  147.  
  148. if __name__ == '__main__':
  149.     main()
  150.  
  151.